package es.uv.bd.view.Vino;

import es.uv.bd.model.Vinos;
import es.uv.bd.model.VinosDAO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.*;


public class VinosCrear_1 extends JFrame {
    
    private JTextField nombre = new JTextField();
    
    private JComboBox cod_bodega = new JComboBox();

    private JComboBox nombre_tipo = new JComboBox();

    private JComboBox clasificacion = new JComboBox();
    
    private VinosDAO vinDAO = new VinosDAO();
    
    private JTable mascotaTable;
   // private HashMap<String, Integer> listaClientes = new HashMap();
   // private Object [] claves;
        
    public VinosCrear_1(JTable mascotaTable) {
            
        super("Nuevo Vino");
        
        this.mascotaTable = mascotaTable;
        
        Container cp = this.getContentPane();
        cp.setLayout(new BorderLayout());
        
        /* Cabecera */
        JPanel cabecera = createCabecera();
  
        /* Formulario */
        JPanel form = createForm();
        
        /* Botón */
        JPanel boton = createButton();

        /* Añadimos todos los paneles al Container */
        cp.add(cabecera, BorderLayout.NORTH);
        cp.add(form, BorderLayout.CENTER);
        cp.add(boton, BorderLayout.SOUTH);
        
        setSize(600,400);
        pack();
        setVisible(true);
    }
   
    private JPanel createCabecera() {
        JPanel c = new JPanel();
        JLabel l = new JLabel("Dar de alta Vino");
        l.setForeground(Color.BLUE);
        l.setHorizontalAlignment(JLabel.CENTER);
        l.setFont(new Font("Arial",Font.BOLD | Font.ITALIC,22));
        c.add(l);
        
        return c;
    }
    
    private JPanel createForm() {
        
       // BodegasDAO clienteDao = new BodegasDAO();
            
        JPanel form = new JPanel();
        Font labelFont = new Font("Arial", Font.BOLD, 12);
        Font textfFont = new Font("Arial", Font.PLAIN, 12);
      
            form.setLayout(new GridLayout(5,2));
            
            cod_bodega.setFont(textfFont);
            cod_bodega.setModel(new DefaultComboBoxModel(vinDAO.fk_Key_BOD()));
            nombre.setFont(textfFont);
            nombre.setColumns(4);
            nombre_tipo.setFont(textfFont);
            nombre_tipo.setModel(new DefaultComboBoxModel(vinDAO.fk_Key_TIPO()));
            clasificacion.setFont(textfFont);
            clasificacion.setModel(new DefaultComboBoxModel(new String[] {"joven","crianza","reserva","gran reserva"}));
            
            JLabel cod_bodegaLabel = new JLabel("Codigo de la bodega:");
            cod_bodegaLabel.setFont(labelFont);
            cod_bodegaLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(cod_bodegaLabel);
            form.add(cod_bodega);

            JLabel nombreLabel = new JLabel("Nombre del Vino:");
            nombreLabel.setFont(labelFont);
            nombreLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(nombreLabel);
            form.add(nombre);
            
            JLabel nombre_tipoLabel = new JLabel("Nombre Tipo del vino:");
            nombre_tipoLabel.setFont(labelFont);
            nombre_tipoLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(nombre_tipoLabel);
            form.add(nombre_tipo);

            JLabel clasificacionLabel = new JLabel("clasificacion del Vino:");
            clasificacionLabel.setFont(labelFont);
            clasificacionLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(clasificacionLabel);
            form.add(clasificacion);

            JLabel DDO_descripcionLabel = new JLabel("Si nombre_tipo no es tinto");
            DDO_descripcionLabel.setFont(labelFont);
            DDO_descripcionLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(DDO_descripcionLabel);
            JLabel DDO_descripcion_2Label = new JLabel(" la clasificacion sera null !! ");
            DDO_descripcion_2Label.setFont(labelFont);
            DDO_descripcion_2Label.setHorizontalAlignment(JLabel.LEFT);
            form.add(DDO_descripcion_2Label);
            
            return form;
    }
        
    private JPanel createButton() {
        
        JPanel botonPanel = new JPanel();
        
        JButton boton = new JButton("Añadir");
        boton.setActionCommand("botonVino");
        boton.addActionListener(new ButtonListener());
        botonPanel.add(boton);
        return botonPanel;
    }
    
    private class ButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent event) {
            try {
                String key = event.getActionCommand();
                switch (key) {
                    case "botonVino":
                        
                        //SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
                        
                        Vinos mascota = new Vinos();
                        
                        mascota.setCod_Bodega(Integer.parseInt((String)cod_bodega.getSelectedItem()));

                        //mascota.setCod_Bodega(Integer.parseInt(cod_bodega.getText()));
                        mascota.setNombre(nombre.getText());
                        
                        mascota.setNombre_tipo((String)nombre_tipo.getSelectedItem());
                        //mascota.setNombre_tipo(nombre_tipo.getText());
                        if (((String)nombre_tipo.getSelectedItem()).equals("tinto")) {
                            mascota.setClasificacion((String)clasificacion.getSelectedItem());  
                        }
                        else{
                            mascota.setClasificacion(null);
                        }
                        
                        VinosDAO mascotaDao = new VinosDAO();
                        mascotaDao.crearVinos(mascota);
                        /*
                         * Actualizamos el modelo
                         */
                        mascotaTable.setModel(mascotaDao.getTablaVinos());
                        mascotaTable.updateUI();
                         /*
                         * Cerramos la ventana
                         */
                        dispose();
                        break;
                    default:
                        System.out.println("VinosCrear: Accion '" + key + "' no reconocida.");
                        break;
                }
            }
            catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException /*| ParseException*/ e) {
                JOptionPane.showMessageDialog(
                null,
                "Error creando Bodega: " + e.getMessage(),
                "Atención",
                JOptionPane.ERROR_MESSAGE);
            }
        }
    }
}
